import io

import pandas as pd


def deal_social_security_df_header(df):
    people_map = ["公积金", "养老金", "失业金", "医疗", "大额医疗", "年金", "工会费"]
    unit_map = ["公积金", "养老金", "失业金", "生育", "工伤", "医疗", "大额医疗", "年金", "工会费"]

    header_map = {}

    for i in df.columns:
        if i.startswith("个人-"):
            h = i[3:]
            for c in people_map:
                if h in c or c in h and "大额医疗" not in h:
                    header_map[i] = "个人-" + c
                    break
        if i.startswith("单位-"):
            h = i[3:]
            for c in unit_map:
                if h in c or c in h and "大额医疗" not in h:
                    header_map[i] = "单位-" + c
                    break
    d = df.copy()
    d.fillna(0, inplace=True)
    duplicates_columns = []
    for key, val in header_map.items():
        if val not in d.columns:
            d.rename(columns={key: val}, inplace=True)
            continue
        if val in d.columns and val != key:
            d[val] = d[val] + d[key]
            duplicates_columns.append(key)
    d.drop(duplicates_columns, axis=1, inplace=True)
    return d


def start():
    data = """
    姓名                身份证号  个人-公积金   个人-养老金  个人-失业金   个人-医疗  个人-大额医疗  个人-年金     个人小计  单位-公积金   单位-养老金  单位-失业金   单位-工伤  单位-医疗（含生育）+大病  单位-年金     单位小计                                    项目名称   个人-公积  个人-养老金啊科技时代  个人-失业金啊手动阀     社保总计
  岳智锋  150121199505274738  1676.0  1117.12   69.82  279.28      3.0    0.0  3145.22  1676.0  2234.24   69.82  209.46        1368.47    0.0  5557.99               中交一公局集团有限公司綦江侨企产业孵化园项目经理部     NaN          NaN         NaN      NaN
   王雪  500228199605270043  1368.0   911.92   22.80  227.98      0.0    0.0  2530.70  1368.0  1595.86   91.19  113.99         609.85    0.0  3778.89               中交一公局集团有限公司綦江侨企产业孵化园项目经理部     NaN          NaN         NaN      NaN
  刘瑾瑜  430902199605030513  1495.0   996.72   24.92  249.18      0.0    0.0  2765.82  1495.0  1744.26   99.67  124.59         666.56    0.0  4130.08               中交一公局集团有限公司綦江侨企产业孵化园项目经理部     NaN          NaN         NaN      NaN
   韩彬  152322198708170511  1824.0  1216.24   30.41  304.06      0.0    0.0  3374.71  1824.0  2128.42  121.62  152.03         813.36    0.0  5039.43               中交一公局集团有限公司綦江侨企产业孵化园项目经理部     NaN          NaN         NaN      NaN
  王紫同  320324199609280667  1566.0  1043.92   26.10  260.98      0.0    0.0  2897.00  1566.0  1826.86  104.39  130.49         698.12    0.0  4325.86               中交一公局集团有限公司綦江侨企产业孵化园项目经理部     NaN          NaN         NaN      NaN
  徐文超  530381199908040715   453.0   605.68   37.86  151.42      0.0    0.0  1247.96   555.0  1059.94   37.86  118.11         719.25    0.0  2490.16               中交一公局集团有限公司綦江侨企产业孵化园项目经理部     NaN          NaN         NaN      NaN
  刘志超  131127200104081573   617.0   755.44   47.22  188.86      0.0    0.0  1608.52   709.0  1322.02   47.22  147.31         897.09    0.0  3122.64               中交一公局集团有限公司綦江侨企产业孵化园项目经理部     NaN          NaN         NaN      NaN
  刘文博  622322199909260035   565.0   781.12   48.82  195.28      0.0    0.0  1590.22   709.0  1366.96   48.82  152.32         927.58    0.0  3204.68               中交一公局集团有限公司綦江侨企产业孵化园项目经理部     NaN          NaN         NaN      NaN
  孙碧虎  532126199402092135  1064.0   709.36   17.73  177.34      0.0    0.0  1968.43  1064.0  1241.38   70.94   44.34         607.39    NaN  3028.05  中交一公局集团有限公司江苏燕尾港木材产业园锯材干燥EPC工程总承包项目经理部     NaN          NaN         NaN      NaN
  罗钫元  220523199712300014     NaN      NaN     NaN  196.34      NaN    NaN  2189.15     NaN      NaN     NaN     NaN            NaN    NaN      NaN                         直属-黄河大桥总包部-2403  1178.0       785.36       29.45  2189.15
  潘明达  371481199607062415     NaN      NaN     NaN  258.58      NaN    NaN  2683.05     NaN      NaN     NaN     NaN            NaN    NaN      NaN                         直属-黄河大桥总包部-2403  1419.0       946.32       59.15  2683.05
  乔雨萌  412721199511035467     NaN      NaN     NaN  137.84      NaN    NaN  1536.88     NaN      NaN     NaN     NaN            NaN    NaN      NaN                         直属-黄河大桥总包部-2403   827.0       551.36       20.68  1536.88
"""
    df = pd.read_csv(io.StringIO(data), delim_whitespace=True)
    print(df)
    df = deal_social_security_df_header(df)
    print(df)


if __name__ == '__main__':
    start()
